perm filename TALK[4,KMC] blob sn#156972 filedate 1975-04-27 generic text, type T, neo UTF8
DO FILES

R MLISPC↔MLISP(PAT,NIL);↔β
|
R LISP 16↔2000 2000     (DSKIN(PAT.LSP)(SLEEP.LAP)SYS: UTILS≠
(INITFN RESTART)↔
|
R MLISPC↔MLISP(DOC,NIL);↔β
|
R LISP 16↔2000 2000     (DSKIN(DOC.LSP)(SLEEP.LAP)SYS: UTILS≠
(INITFN RESTART)↔
SLEEP.LAP

(LAP SLEEP SUBR)
(CALL 1 (E NUMVAL))
(047000 1 31)
(POPJ P)
NIL

% DOC %

% THIS IS A PROGRAM NEEDED BY 'PAT'.  TO RECONSTRUCT THE DOC CORE IMAGE:

 R MLISPC↔MLISP(DOC,NIL);↔β
 
 R LISP 16↔2000 2000     (DSKIN(DOC.LSP)(SLEEP.LAP)SYS: UTILS≠
 (INITFN RESTART)↔
 SAVE DOC

TO RUN THE PROGRAM, TYPE
	.RUN DOC
%


BEGIN

NEW	FILEAREA,INFILE,OUTFILE;
SPECIAL	FILEAREA,INFILE,OUTFILE,MESSNO;

EXPR ERROR(L);  PRINT(L);

EXPR LPRINT(L);  MAPC('PRINC,REVERSE(L));

EXPR SENDMESS(L);
	BEGIN NEW A,CHAN;
	A←ERRSET( CHAN←EVAL< 'OUTPUT,FILEAREA,OUTFILE >, NIL);
	IF ¬A THEN ERROR("CANT SEND OUTPUT") ALSO EXIT();
	OUTC(CHAN,NIL);
	MESSNO←MESSNO+1;  PRINT MESSNO; PRINT L;
	OUTC(NIL,T);
	END;

EXPR WAITONMESS(N,FLAG);
	BEGIN NEW A;
	WHILE ¬A←MAILIN(N) DO BEGIN
		IF FLAG THEN PRINTSTR("WAITING...");
		SLEEP(10);
		END;
	RETURN A;
	END;

EXPR MAILIN(N);
	BEGIN NEW A,CHAN;
	A←ERRSET( CHAN←EVAL< 'INPUT,FILEAREA,INFILE >, NIL);
	IF ¬A THEN RETURN NIL;
	INC(CHAN,NIL);
	A←READ(); IF ¬(A=N) THEN INC(NIL,T) ALSO RETURN NIL;
	A←READ();
	INC(NIL,T);
	RETURN A;
	END;

EXPR CHECKMAIL();
	BEGIN NEW A,B,C,D,CHAN;
	A←ERRSET( CHAN←EVAL< 'INPUT,FILEAREA,INFILE >, NIL);
	IF ¬A THEN ERROR( "CANT RESTART -- FILE WAS DELETED" );
	INC(CHAN,NIL); 	A←READ(); B←READ(); INC(NIL,T);
	C←ERRSET( CHAN←EVAL< 'INPUT,FILEAREA,OUTFILE >, NIL);
	IF ¬C THEN ERROR( "CANT RESTART -- FILE WAS DELETED" );
	INC(CHAN,NIL); 	C←READ(); D←READ(); INC(NIL,T);
	RETURN <A,B,C,D>;
	END;

EXPR SLEEP(N); SLEEP2(N);

EXPR SLEEP2(N);
	FOR I←1 TO N BY 1 DO PRINT(I);


EXPR RUN();
	BEGIN NEW A,RESTART,CH,L;
	FILEAREA←'(NET KMC); INFILE←'IN; OUTFILE←'OUT;
	MESSNO←0;

	PRINC("ARE YOU STARTING A CONVERSATION
 OR RESTARTING AFTER A SYSTEM CRASH?[S OR R]");
	RESTART←READ();   RESTART←¬(RESTART='S);

	IF ¬RESTART THEN BEGIN
PRINTSTR "
IF THE SYSTEM GOES DOWN,
YOU MAY HAVE TO RETYPE YOUR LAST QUESTION.
WE WILL BE READY TO GO IN A MINUTE.
";

	SENDMESS( '(RRRRREADY) );
	A←WAITONMESS(1,T);
	IF ¬(A EQUAL '(RRRRREADY)) THEN ERROR("INITIALIZATION NO GOOD");
PRINTSTR "

END INPUT WITH TWO ALTMODES.
";
	END ELSE     % RESTART ROUTINE %
	  BEGIN
	  L←CHECKMAIL();  
	  IF CAR L=CADDR L THEN PRINTSTR "LAST INPUT: " ALSO LPRINT(CADR L)
		ALSO RESTART←NIL
		ELSE PRINTSTR "LAST OUTPUT: " ALSO LPRINT(CADDDR L)
		ALSO PRINTSTR "WAITING...";
	  MESSNO←CADDR L;
	  END;

	WHILE T DO BEGIN
		
	TERPRI TERPRI NIL; L←NIL;
	IF ¬RESTART THEN BEGIN
	 PRINTSTR "READY:";
	 DO NIL UNTIL (CH ← READCH()) NEQ CR & CH NEQ LF & CH NEQ ALTMODE;
	 TERPRI DO L ← CH CONS L UNTIL (CH ← READCH()) EQ ALTMODE & (CH ← READCH()) EQ ALTMODE;
	 SENDMESS(L);
	 END;
	RESTART←NIL;
	L←WAITONMESS(MESSNO,NIL);	

	TERPRI NIL;
	LPRINT(L);
	END;

	END;

RUN();
END.
% PAT %

% THIS IS A PROGRAM NEEDED BY 'DOC'.  TO RECONSTRUCT THE PAT CORE IMAGE:

 R MLISPC↔MLISP(PAT,NIL);↔β
 
 R LISP 16↔2000 2000     (DSKIN(PAT.LSP)(SLEEP.LAP)SYS: UTILS≠
 (INITFN RESTART)↔
 SAVE PAT

TO RUN THE PROGRAM, TYPE
	.RUN PAT
%


BEGIN

NEW	FILEAREA,INFILE,OUTFILE;
SPECIAL	FILEAREA,INFILE,OUTFILE,MESSNO;

EXPR ERROR(L);  PRINT(L);

EXPR LPRINT(L);  MAPC('PRINC,REVERSE(L));

EXPR SENDMESS(L);
	BEGIN NEW A,CHAN;
	A←ERRSET( CHAN←EVAL< 'OUTPUT,FILEAREA,OUTFILE >, NIL);
	IF ¬A THEN ERROR("CANT SEND OUTPUT") ALSO EXIT();
	OUTC(CHAN,NIL);
	MESSNO←MESSNO+1;  PRINT MESSNO; PRINT L;
	OUTC(NIL,T);
	END;

EXPR WAITONMESS(N,FLAG);
	BEGIN NEW A;
	WHILE ¬A←MAILIN(N) DO BEGIN
		IF FLAG THEN PRINTSTR("WAITING...");
		SLEEP(10);
		END;
	RETURN A;
	END;

EXPR MAILIN(N);
	BEGIN NEW A,CHAN;
	A←ERRSET( CHAN←EVAL< 'INPUT,FILEAREA,INFILE >, NIL);
	IF ¬A THEN RETURN NIL;
	INC(CHAN,NIL);
	A←READ(); IF ¬(A=N) THEN INC(NIL,T) ALSO RETURN NIL;
	A←READ();
	INC(NIL,T);
	RETURN A;
	END;

EXPR CHECKMAIL();
	BEGIN NEW A,B,C,D,CHAN;
	A←ERRSET( CHAN←EVAL< 'INPUT,FILEAREA,INFILE >, NIL);
	IF ¬A THEN ERROR( "CANT RESTART -- FILE WAS DELETED" );
	INC(CHAN,NIL); 	A←READ(); B←READ(); INC(NIL,T);
	C←ERRSET( CHAN←EVAL< 'INPUT,FILEAREA,OUTFILE >, NIL);
	IF ¬C THEN ERROR( "CANT RESTART -- FILE WAS DELETED" );
	INC(CHAN,NIL); 	C←READ(); D←READ(); INC(NIL,T);
	RETURN <A,B,C,D>;
	END;
EXPR SLEEP(N); SLEEP2(N);

EXPR SLEEP2(N);
	FOR I←1 TO N BY 1 DO PRINT(I);


EXPR RUN();
	BEGIN NEW A,RESTART,CH,L;
	FILEAREA←'(NET KMC); INFILE←'OUT; OUTFILE←'IN;
	MESSNO←0;

	PRINC("ARE YOU STARTING A CONVERSATION
 OR RESTARTING AFTER A SYSTEM CRASH?[S OR R]");
	RESTART←READ();   RESTART←¬(RESTART='S);

	IF ¬RESTART THEN BEGIN
PRINTSTR "
IF THE SYSTEM GOES DOWN,
YOU MAY HAVE TO RETYPE YOUR LAST QUESTION.
WE WILL BE READY TO GO IN A MINUTE.
";

	A←WAITONMESS(1,T);
	IF ¬(A EQUAL '(RRRRREADY)) THEN ERROR("INITIALIZATION NO GOOD");
	SENDMESS( '(RRRRREADY) );
PRINTSTR "

END INPUT WITH TWO ALTMODES.
";
	END
	ELSE %RESTART ROUTINE%  BEGIN
	  L←CHECKMAIL();
	  IF CAR L=CADDR L THEN PRINTSTR "LAST OUTPUT: " ALSO LPRINT(CADDDR L)
		ALSO PRINTSTR "WAITING..."  ALSO RESTART←NIL
		ELSE PRINTSTR "LAST INPUT: " ALSO LPRINT(CADR L);
	  MESSNO←CADDR L;
	  END;

	WHILE T DO BEGIN

	IF ¬RESTART THEN BEGIN
	 L←WAITONMESS(MESSNO+1,NIL);	
	 TERPRI NIL;
	 PRINTSTR "INTERVIEWER:";
	 LPRINT(L);
	 END;
	RESTART←NIL;
	
	TERPRI TERPRI NIL; L←NIL;
	PRINTSTR "READY:";
	DO NIL UNTIL (CH ← READCH()) NEQ CR & CH NEQ LF & CH NEQ ALTMODE;
	TERPRI DO L ← CH CONS L UNTIL (CH ← READCH()) EQ ALTMODE & (CH ← READCH()) EQ ALTMODE;

	SENDMESS(L);
	END;

	END;

RUN();
END.